iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 22
0

類別

物件導向中,類別是一組具有共同特性的所有物件成員的抽象描述,它的定義描述了該類別物件共同具有的屬性,及實現該物件共同行為的方法。例如對汽車進行抽象分析後,就能大致把它分成下方的樣子。

  • 類別名稱: Car
  • 屬性:汽車型號、車牌、車速、車高、車寬
  • 方法:前進、後退、加速、煞車

之後會在舉出更多例子。

定義

在Python中,類別是用關鍵字class定義,語法為下:

class 類別名稱:
    #類別建構式
    def __init__(self,參數1,參數2,參數3,...):
    #設定資料
    .
    .
    .
    def 自訂方法(self,參數1,參數2,參數3,...):   #可多個
    .
    .
    .

依照慣例,先附上最基礎的例子最好懂/images/emoticon/emoticon42.gif

class Dog:                    #定義Dog類別
    def bark(self):           #定義方法bark()
        print("汪!汪!汪!")
    
dog = Dog()                   #建立物件dog
dog.bark()                    #讓dog呼叫方法bark()
--------------------------------
汪!汪!汪!

據上方程式可知,我們建立一個Dog類別,裡面有可印出狗叫聲的方法。之後下面就是呼叫剛建立的類別方法了,那我們在程式中再增加一個物件屬性name試試:

class Dog:                    
    def bark(self,n):           
        self.name = n           #將n設定值給物件屬性name
        print("汪!汪!汪!我是"+self.name+"!")
    
dog = Dog()      
dog.bark("小東")       
--------------------------------
汪!汪!汪!我是小東!

上方在利用dog.bark("小東")呼叫時,需要給一個實際參數「小東」。那麼系統一開始便自動將dog作為第一參數self、「小東」就會排在後面做為第二參數n,傳遞給方法bark()。

__init__()方法

__init__()方法用於物件的初始化,在類別被產生實體時立刻執行,通常在裡面都放一些不太變動的基本數值,如下:

class Dog:   
    def __init__(self,name,color):     #建構式
        self.name = name               #name屬性
        self.color = color             #color屬性
        
    def bark(self):
        print("汪!汪!汪!我是"+self.name+"!")
    
dog = Dog("小東","棕色")                           #建立物件自動呼叫__init__()方法
print("狗名為:"+dog.name+" 顏色為"+dog.color+"")
dog.bark()     
--------------------------------
狗名為:小東 顏色為棕色
汪!汪!汪!我是小東!

類別與物件變數

類別變數是共用的,它們可以被類別中的所有物件使用,在存活期間,任何物件對它進行的修改都會儲存反映到其他所有物件上;物件變數則是被自己的物件所擁有,即便有名稱相同的物件變數也沒有任何關聯。以下為實例:

class Dog:   

    count = 0                      #類別變數count
    
    def __init__(self,name,color):    
        self.name = name               
        self.color = color           
        Dog.count = Dog.count+1    #要使用就要加上類別名稱(每新增加1)
        
    def bark(self):
        print("汪!汪!汪!我是"+self.name+"!")
        print ("現在有%d隻狗!"%Dog.count)
    
dog = Dog("小東","棕色")
dog.bark() 
dog2 = Dog("阿黑","黑色")
dog2.bark()
dog3 = Dog("阿白","白色")
dog3.bark()
--------------------------------
汪!汪!汪!我是小東!
現在有1隻狗!
汪!汪!汪!我是阿黑!
現在有2隻狗!
汪!汪!汪!我是阿白!
現在有3隻狗!

接下來要看繼承嚕~

參考資料

  • 書名-大數據起步從Python開始 /吳萍-編著

上一篇
Day21-物件導向概念
下一篇
Day23-繼承
系列文
Python 30天學習日誌30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言